function Animal(type) {
    this.type = type
    // 如果当前构造函数 返回的是一个 引用类型  需要把这个对象返回
    // return { name: 'jw' }
}

Animal.prototype.say = function () {
    console.log('say')
}

// let animal = new Animal()
let animal = mockNew(Animal, '哺乳类')
animal.say() 


function mockNew () {
    // Constructor => animal 剩余的 arguments 就是其他的参数
    let Constructor = [].shift.call(arguments)
    let obj = {} //返回的结果
    obj.__proto__ = Constructor.prototype
    let r = Constructor.apply(obj, arguments)
    return r instanceof Object ? r : obj
}

